<html>
<head>
<title>08 函数 call&apply</title>
</head>
<body>
	<script type="text/javascript">
		/*
		* call() 和 apply()
		*	- 这2个方法是函数对象的方法，需要通过函数对象来调用
		*	- 当对函数调用call()和apply()都会调用函数执行
		*	- 在调用call()和apply()可以将一个对象指定为第一个参数，此时这个对象将会成为函数执行时对this
		*	- call() 方法可以将实参在对象之后依次传递
		*	- apply() 方法需要将实参封装到一个数组中统一传递

		* this 的情况：
		* 1. 当以函数的形式调用时，this是window
		* 2. 当以方法的形式调用时，谁调用方法this就是谁
		* 3. 当以构造函数的形式调用时，this就是新创建的那个对象
		* 4. 使用call()和apply()调用时，this是指定的那个对象
		
		*/

		function fun(a, b){
			//alert("我是fun函数");
			//alert(this.name);
			console.log("a = "+ a);
			console.log("b = "+ b);
		}


		/*fun.apply();
		fun.call();
		fun();*/

		var obj = {
			name : "name",
		sayName:function(){
			alert(obj)
			}
		};
		var obj1 = {name : "name1"};

		/*fun.apply(obj);
		fun.call(obj1);
		fun(obj);

		obj.sayName(obj.name);*/



		fun.call(obj,2,3);
		fun.apply(obj1,[2,3]);

		
	</script>
</body>


</html>